home *** CD-ROM | disk | FTP | other *** search
- /* ffp.h
- *
- * #include header file facilitating the use of the Motorola Fast Floating
- * Point (FFP) routines in programs compiled with Lattice C
- *
- * by Kevin Rahe at Reliable Software
- *
- * May be freely distributed (but only FREEly!)
- */
-
- /* FFP = Motorola floating point variable int = long integer
-
- FORMAT RETURNS POSSIBLE VALS.
- */
- extern int SPFix(); /* SPFix(FFP) int */
- extern int SPFlt(); /* SPFlt(int) FFP */
- extern int SPCmp(); /* SPCmp(FFP,FFP) int 0=equal, 1=unequal */
- extern int SPTst(); /* SPTst(FFP) int -1, 0, 1 */
- extern int SPAbs(); /* SPAbs(FFP) FFP positive */
- extern int SPNeg(); /* SPNeg(FFP) FFP */
- extern int SPAdd(); /* SPAdd(FFP,FFP) FFP */
- extern int SPSub(); /* SPSub(FFP,FFP) FFP subt. 1st from 2nd */
- extern int SPMul(); /* SPMul(FFP,FFP) FFP */
- extern int SPDiv(); /* SPDiv(FFP,FFP) FFP div. 2nd by 1st */
- extern int SPCeil();/* SPCeil(FFP) FFP integer above FFP */
- extern int SPFloor();/* SPFloor(FFP) FFP integer below FFP */
-
- extern int SPAtan();/* SPAtan(FFP) FFP ArcTangent */
- extern int SPSin(); /* SPSin(FFP) FFP */
- extern int SPCos(); /* SPCos(FFP) FFP */
- extern int SPTan(); /* SPTan(FFP) FFP */
- extern int SPSincos();/* SPSincos(&FFP1,FFP2) returns the Sine of
- FFP2, and Cosine of FFP2 in FFP1) */
- extern int SPSinh();/* SPSinh(FFP1) FFP */
- extern int SPCosh();/* SPCosh(FFP1) FFP */
- extern int SPTanh();/* SPTanh(FFP1) FFP */
- extern int SPExp(); /* SPExp(FFP1) FFP e ^FFP1 */
- extern int SPLog(); /* SPLog(FFP1) FFP log to base e */
- extern int SPLog10();/* SPLog10(FFP1) FFP log to base 10 */
- extern int SPPow(); /* SPPow(FFP1,FFP2) FFP FFP2 ^FFP1 */
- extern int SPSqrt();/* SPsqrt(FFP1) FFP */
- extern int SPTieee(); /* converts FFP to IEEE */
- extern int SPFieee(); /* converts IEEE to FFP */
-
- int MathBase; /* basic FFP lib pointer */
- int MathTransBase; /* transendental FFP lib pointer */
-
- union spfloat /* kludge so floats can be passed as single-precision */
- {
- float f;
- int i;
- };
-
- #define FFP long /* use integers to store FFP numbers so the FFP
- library routines can be called with no problems */
-
- float makefloat (in_val) /* convert FFP to IEEE and return */
- int in_val;
- {
- union spfloat k; /* union as defined above */
- k.i = SPTieee(in_val);
- return (k.f);
- }
-
- int makeFFP (in_val) /* convert IEEE to FFP and return */
- float in_val;
- {
- union spfloat k; /* union as defined above */
- k.f = in_val;
- return (SPFieee(k.i));
- }
-
- int OpenMathLibs() /* returns FALSE if error */
- {
- int stat = 1;
-
- if ( (MathBase = OpenLibrary("mathffp.library", 0L)) == 0L)
- stat = 0;
-
- if ( (MathTransBase = OpenLibrary("mathtrans.library", 0L)) == 0L)
- {
- CloseLibrary(MathBase);
- stat = 0;
- }
- return(stat);
- }
-
- CloseMathLibs()
- {
- CloseLibrary(MathTransBase);
- CloseLibrary(MathBase);
- }
-